from django.db import models
from django.contrib.auth.models import User, UserManager
from gestione_caratteristiche.models import CategorieProdotti, CondizioniDiVendita, UnitaDiMisura
import re

class Utenti(User):
    cellulare = models.CharField(max_length=135, blank=True, null=True, verbose_name='Cellulare' )
    mail_primaria = models.CharField(max_length=135, blank=True, null=True, verbose_name='E-Mail principale' )
    mail_secondaria = models.CharField(max_length=135, blank=True, null=True, verbose_name='E-Mail secondaria' )
    pagina_web = models.CharField(max_length=135, db_column='pagina web', blank=True, null=True, verbose_name='Pagina Web' ) # Field renamed to remove spaces. Field name made lowercase.
    objects = UserManager()
    
    # Quando salviamo dobbiamo adottare la nostra codifica password, ovvero dobbiamo fare un override di quella esistente
    # altrimenti ci rimane in chiaro.
    # If the password is already hashed in the form we just dont change anything otherwise we call the set_password()
    def save(self):
        password = ""
        r = re.compile('sha1\$.*')
        if not r.match(self.password):
            password = self.password
            self.set_password(self.password)
        User.save(self)
        
    class Meta:
        db_table = u'Utenti'
        verbose_name_plural = u'Utenti'
        
class Fornitori(models.Model):
    id_fornitore = models.AutoField(primary_key=True)
    nome = models.CharField(max_length=360)
    nome_contatto = models.CharField(max_length=135, db_column='nome contatto') # Field renamed to remove spaces. Field name made lowercase.
    nome_contatto_altro = models.CharField(max_length=135, db_column='nome contatto altro', blank=True) # Field renamed to remove spaces. Field name made lowercase.
    referente_registrato = models.ForeignKey(Utenti,null=True, blank=True) # Field renamed to remove spaces. Field name made lowercase.
    indirizzo = models.CharField(max_length=135, blank=True)
    googlemaps_links = models.CharField(max_length=1350, blank=True)
    telefono = models.CharField(max_length=135)
    fax = models.CharField(max_length=135, blank=True)
    mail = models.CharField(max_length=135, blank=True)
    pagina_web = models.CharField(max_length=450, blank=True)
    descrizione = models.CharField(max_length=3072, blank=True)
    class Meta:
        db_table = u'Fornitori'
    def __unicode__(self):
        return self.nome
    
class InventarioProdotti(models.Model):
    id_prodotto = models.AutoField(primary_key=True)
    nome = models.CharField(max_length=135)
    fornitore = models.ForeignKey(Fornitori, blank=False, null=False)
    categoria = models.ForeignKey(CategorieProdotti, null=True, blank=True)
    pezzatura = models.IntegerField(null=True, blank=True)
    unita_di_misura_id = models.ForeignKey(UnitaDiMisura, null=True, blank=True)
    prezzo_unitario = models.CharField(max_length=135, blank=True)
    prezzo_trasporto = models.CharField(max_length=135, blank=True)
    prezzo_variabile = models.CharField(max_length=135, blank=True)
    quantita_minima_ordinabile = models.CharField(max_length=135, blank=True)
    descrizione = models.CharField(max_length=135, blank=True)
    immagine = models.CharField(max_length=135, blank=True)
    allegato_digitale = models.CharField(max_length=135, blank=True)
    locazione_geografica = models.CharField(max_length=135, blank=True)
    modalita_ordinaria_di_consegna = models.CharField(max_length=135, blank=True)
    modalita_ordinaria_di_pagamento = models.CharField(max_length=135, blank=True)
    descrizione_altre_modalita_pagamento_e_consegna = models.CharField(max_length=3072, blank=True)
    condizione_di_vendita = models.ForeignKey(CondizioniDiVendita, null=True, blank=True)
    def __unicode__(self):
        return '%s di %s' % (self.nome, self.fornitore)
    
    class Meta:
        db_table = u'Inventario_Prodotti'





